home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
data
/
fapx
/
fapxrtn.plp
< prev
next >
Wrap
Text File
|
1994-11-16
|
7KB
|
332 lines
/* 発言数及びリミット数から指定番号を調整・タイプする */
%TypeNum{
[rtnline,spkmax,limit]
var Nrtn [3];
var First [1];
var RtnNumA [5];
var RtnNumB [5];
%rtn @tail(@read(UP2|{fapxrtn.ctl},rtnline,1),{rtn=},{\n});
dispoff(!DEBUG);
display({\n指定された発言番号:#}|rtn);
display({\n発言数:}|spkmax|{ ボーダーライン:#});
case( spkmax - limit <= 0,
{Yes},{display({1\n})},
{No},{display(spkmax-limit|{\n})}
);
dispoff({No});
Nrtn:=1;
First:=0;
loop({
%rtnpart @nth(rtn,Nrtn,{,});
case( ( @body(rtnpart,{-}) = {} ) &&
( @body(rtnpart,,{-}) = {} ),
{Yes},
{
case (rtnpart <> {},
{Yes},
{case ( rtnpart > ( spkmax - limit ),
{Yes},
{case(First=0,
{Yes},{type({#})},
{No},{type({,})}
);
type(rtnpart);
First:=1;
});
im({Yes})
},
{No},{im({No})}
);
},
{No},
{
%rtna @body(rtnpart,,{-});
%rtnb @body(rtnpart,{-});
case(( rtna>0 ) && ( rtn >0 )&&( rtna>=rtnb ),
{Yes},
{RtnNumA:=rtnb;RtnNumB:=rtna},
{No},
{RtnNumA:=rtna;RtnNumB:=rtnb}
);
case( RtnNumA > ( spkmax - limit ),
{No},
{
case( RtnNumB = {},
{Yes},
{RtnNumA:=spkmax - limit + 1},
{No},
{RtnNumA:={}}
);
});
case( RtnNumB > ( spkmax - limit ),
{No},{RtnNumB:={}}
);
case( ( RtnNumA = {} ) && ( RtnNumB = {} ),
{No},
{case( First = 0,
{Yes},{type({#})},
{No},{type({,})}
);
type(RtnNumA|{-}|RtnNumB);
First:=1;
});
im({Yes});
});
Nrtn:=Nrtn+1;
});
case( First = 1,
{Yes},{type({\n});im({OK})},
{No},{im({OUT})}
);
};
%FDwn1{
%PrmptChk{
wait(,,
{入力して下さい◆\n}|
{電子会議 (1:発言 改行のみ: 読む) 通常モード\n>},
{im({Error})},
{入力して下さい◆\n電子会議 }|
{(1:発言 改行のみ: 読む) ペアレントモード\n>},
{im({Error})},
{入力して下さい◆\n}|
{電子会議 (改行のみ: 読む) 通常モード\n>},
{im({Error})},
{入力して下さい◆\n}|
{電子会議 (改行のみ: 読む) ペアレントモード\n>},
{im({Error})},
{\n電子会議 (1:発言 改行のみ: 読む) 通常モード\n>},
{im({Ok})},
{\n電子会議 (1:発言 改行のみ: 読む)}|
{ ペアレントモード\n>},
{im({Ok})},
{\n電子会議 (1:発言 2:コメントを読む }|
{改行のみ: 読む) 通常モード\n>},
{im({Ok})},
{\n電子会議 (改行のみ: 読む) 通常モード\n>},
{im({Ok})},
{\n電子会議 (改行のみ: 読む) ペアレントモード\n>},
{im({Ok})});
};
case(@TypeNum(rtnline,MesNum,{999}),
{OK},
{case(@PrmptChk,
{Error},
{case(@TypeNum(rtnline,MesNum,{512}),
{OK},
{case(@PrmptChk,
{Error},
{display(
{\n作動が一寸おかしいです。\n})},
{Ok},{/*正常作動*/});
})},
{Ok},{/*正常作動*/});
});
};
/* フォーラムと会議室を指定して指定発言をダウンする */
%FORUMdown{
[forum,mes,rtnline]
var RtnNumA[5];
var RtnNumB[5];
%CHKFTOP{
case(Rwhere2=forum,
{Yes},
{im(@case(@GO({forum/}|forum|{/mes/}|mes),
{Yes},{im({Yes})},
{ReadOnly},{im({Yes})},
,{im({No})}))},
{No},
{im(@case(@GO({forum/}|forum),
{Yes},
{type({SET PAUSE OFF\n});
WAITABORT(Wtime2);
case(@GO({forum/}|forum|{/mes/}|mes),
{Yes},{im({Yes})},
{ReadOnly},{im({Yes})},
,{im({No})})},
{No},
{im({No})}
));
});
};
case(LOGmode,
{forum},
{case(Rwhere1,
{PATIO},
{LOGforum({PATIO\}|Rwhere2,{stop});
LOGforum(forum,{start})},
{FORUM},
{case( Rwhere2 <> forum,
{Yes},
{LOGforum(Rwhere2,{stop});
LOGforum(forum,{start})}
);
},
{},
{LOGforum(forum,{start})}
);
});
case(@CHKFTOP,
{Yes},
{
%a @laststr(128);
%b @head(@body(a,{ 発言数 :}),{ 未読 :});
case( b = {},{No},{MesNum:=b});
dispoff(!DEBUG);
display({\n発言数は現在:}|MesNum|{です。\n});
dispoff({No});
Rwhere1:={FORUM};
Rwhere2:=forum;
FDwn1;
},
{No},
{case(LOGmode,
{forum},
{LOGforum(forum,{stop});
Rwhere1:={};Rwhere2:={}}
);
});
};
/* パティオを指定して指定発言をダウンする */
%PATIOdown{
[patioid,pass,mes,rtnline]
case( LOGmode,
{forum},
{case( Rwhere1,
{PATIO},
{case( Rwhere2 <> patioid,
{Yes},
{LOGforum({PATIO\}|Rwhere2,{stop});
LOGforum({PATIO\}|patioid,{start})}
);
},
{FORUM},
{LOGforum(Rwhere2,{stop});
LOGforum({PATIO\}|patioid,{start})},
{},
{LOGforum({PATIO\}|patioid,{start})}
);
});
case(@GO({patio/}|patioid|{/}|pass|{/MES/1}),
{Yes},
{
%a @laststr(128);
%b @getchar(@head(@body(a,{最新 会議室名\n}),{\n}),6,5);
case( b = {},{No},{MesNum:=b});
dispoff(!DEBUG);
display({\n発言数は現在:}|MesNum|{です。\n});
dispoff({No});
Rwhere1:={PATIO};
Rwhere2:=patioid;
type({SET PAUSE OFF\n});
WAITABORT(Wtime2);
case(@TypeNum(rtnline,MesNum,{512}),
{OK},
{
wait(,,
{◆番号又はコマンドを入力して下さい◆\n}|
{PATIO(N)>},
{display({\n作動が一寸おかしいです。\n})},
{\nPATIO(N)>},,
{◆番号又はコマンドを入力して下さい◆\n}|
{PATIO(P)>},
{display({\n作動が一寸おかしいです。\n})},
{\nPATIO(P)>},
);
});
},
{No},
{
case(LOGmode,
{forum},
{LOGforum({PATIO\}|patioid,{cancel});
});
Rwhere1:={};
Rwhere2:={};
});
};
/* ダウン先の振り分け */
%AUTOrtnDWN1{
case (@head(linebuf,{=}),
{forum},
{
FORUMdown( @tail(linebuf,{forum=},{;}),
@tail(linebuf,{mes=},{;}),
line);
im({Yes});
},
{patio},
{
PATIOdown( @tail(linebuf,{patio=},{;}),
@tail(linebuf,{pass=},{;}),
@tail(linebuf,{mes=},{;}),
line);
im({Yes});
},
{},{im({No})}, /* 空文字列なら終了 */
,{im({Yes})} /* それ以外なら次の行を読む */
);
};
%AUTOrtn{
[file]
case (@filechk(file),
{Yes},
{
Rwhere1:={};
Rwhere2:={};
line:=0;
loop ({
line:=line+1;
linebuf:={};
linebuf:=@read(file,line,1);
AUTOrtnDWN1;
});
case(LOGmode={forum}&&Rwhere2<>{},
{Yes},{LOGforum(Rwhere2,{stop})});
},
{No},
{
SNDMSG({okasi_f.snd});
display({\n}|file|{制御ファイルがありません\n});
});
};
/* 指定発言ダウンロード制御ファイルの有無の判定処理 */
%AUTORTNLOGDOWN
{
var MesNum[5];
display({指定発言の自動ダウンロードを開始します\n});
footnote({指定発言の自動ダウンロードをしています});
case(@filechk(UP2|{fapxrtn.ctl}),
{Yes},
{AUTOrtn(UP2|{fapxrtn.ctl});
case(@filechk(UP2|{fapxrtn.rsv}),{Yes},
{copyfile(UP2|{fapxrtn.rsv},UP2|{fapxrtn.bak});
addfile(UP2|{fapxrtn.ctl},UP2|{fapxrtn.bak});
},{No},
{dispoff(!DEBUG);
command({copy }|UP2|{fapxrtn.ctl }|UP2|{fapxrtn.bak});
dispoff({No});
});
delfile(UP2|{fapxrtn.ctl});
});
};
/* 自動通信処理 */
var line [3];
var linebuf [1024];
var Rwhere1 [5];
var Rwhere2 [8];
case( (DNT={first}) || (DNT={last}),
{Yes},
{case(@filechk(UP2|{fapxrtn.ctl}),{Yes},
{AUTORTNLOGDOWN;Where:={}});
});